from flask import Flask, redirect, url_for
# Flask 路由 可变规则 url建立

app = Flask(__name__)


# route() 装饰器被用来将 URL 绑定到一个函数 #
# http://127.0.0.1:5000/hello
# @app.route('/hello')
# def hello():
# 	return 'Hello World!'


# add_url_rule() “函数也可用于将URL与函数绑定 #
# http://127.0.0.1:5000/hello
# def hello():
# 	return "Hello World!"
#
#
# app.add_url_rule(rule='/hello', view_func=hello, methods=['GET'], endpoint='hello_world1')


#http://localhost:5000/hello/zhenghao 将把 ‘zhenghao’ 作为参数传递给 hello() 函数。#
# @app.route('/hello/<name>')
# def hello(name):
# 	return 'Hello %s!' % name


#默认的字符串变量,其他还可以1.默认的字符串变量部分外 2.float 用于浮点数值 3.path 接受斜杠作为目录分隔符 #
# http://localhost:5000/blog/42
# @app.route('/blog/<int:postID>')
# def show_blog(postID):
#    return 'Blog Number %d' % postID


# http://localhost:5000/rev/42.2
# @app.route('/rev/<float:revNo>')
# def revision(revNo):
#    return 'Revision Number %f' % revNo


#url_for() 函数非常有用，可以动态地为特定函数创建URL。#
#该函数接受函数名称作为第一个参数，以及一个或多个关键字参数，每个参数对应URL的变量部分
# User() 函数检查接收到的参数是否匹配 ‘admin’ 。
# 如果匹配，则应用程序将重定向到 hello_admin() 函数，使用 url_for() ；
# 否则，将重定向到 hello_guest() 函数，并将接收到的参数传递给它作为guest参数。
# http://localhost:5000/user/admin
# http://localhost:5000/user/dfsdf
@app.route('/admin')
def hello_admin():
	return 'Hello Admin'


@app.route('/guest/<guest>')
def hello_guest(guest):
	return 'Hello %s as Guest' % guest


@app.route('/user/<name>')
def hello_user(name):
	if name == 'admin':
		return redirect(url_for('hello_admin'))
	else:
		return redirect(url_for('hello_guest', guest = name))


if __name__ == '__main__':
	#app.run(host, port, debug, options)
	# host（可选）（默认为127.0.0.1）host要监听的主机名。(本地主机）设置为’0.0.0.0’以使服务器外部可用。
	# port（可选）（默认为5000）要监听的端口。
	# debug（可选）（默认为False）如果为True，服务器将重新启动，以处理代码更改。
	# options（可选）（默认为None）传递给WSGI服务器的选项。
	app.run()